package com.neusoft.myutils;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class MyUtil {

	/**
	 * 
	 * @param <T>
	 * @Title getMyMapper
	 * @Description 获取实体bean的方法
	 * @param 无参数
	 * @return T 泛型实体bean
	 * @throws 方法内部捕获异常
	 */
	public static <T> T getMyMapper(Class<T> tClass) {
		//声明SqlSession实例对象
		T res_t = null;
		try {
			// 将mybatis配置文件读取为输入流对象
			InputStream stream = MyUtil.class.getClassLoader().getResourceAsStream("config-mybatis.xml");
			// 创建Properties工具类对象实例
			Properties pro = new Properties();
			// 将数据库配置文件读取为输入流对象
			pro.load(MyUtil.class.getClassLoader().getResourceAsStream("db.properties"));
			// SqlSessionFactoryBuilder的创建类
			SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
			// 使用builder创建SqlSessionFactory实例对象
			SqlSessionFactory factory = builder.build(stream, pro);
			//创建session实例对象
			SqlSession openSession = factory.openSession();
			//获取mapper映射接口层
			res_t=openSession.getMapper(tClass);
		} catch (IOException e) {
			// 打印错误的栈信息
			e.printStackTrace();
		}
		return res_t;
	}
	
	/**
	 * 
	 * @Title getSqlSession
	 * @Description 创建SqlSession实例对象方法
	 * @param 无参数
	 * @return SqlSession 查询实例对象
	 * @throws 方法内部捕获异常
	 */
	public static SqlSession getSqlSession() {
		//声明SqlSession实例对象
		SqlSession session = null;
		try {
			// 将mybatis配置文件读取为输入流对象
			InputStream stream = MyUtil.class.getClassLoader().getResourceAsStream("config-mybatis.xml");
			// 创建Properties工具类对象实例
			Properties pro = new Properties();
			// 将数据库配置文件读取为输入流对象
			pro.load(MyUtil.class.getClassLoader().getResourceAsStream("db.properties"));
			// SqlSessionFactoryBuilder的创建类
			SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
			// 使用builder创建SqlSessionFactory实例对象
			SqlSessionFactory factory = builder.build(stream, pro);
			//创建session实例对象
			session = factory.openSession();
		} catch (IOException e) {
			// 打印错误的栈信息
			e.printStackTrace();
		}
		return session;
	}

}
